热门标签 | HotTags
当前位置:  开发笔记 > 程序员 > 正文

左上角|表现力_duilibcorner属性的贴图技巧——让图片自动贴到控件的的某一边或者一角并自适应控件的大小

篇首语:本文由编程笔记#小编为大家整理,主要介绍了duilib corner属性的贴图技巧——让图片自动贴到控件的的某一边或者一角并自适应控件的大小相关的知识,希望对你有一定的参考价值。 转载请说明原

篇首语:本文由编程笔记#小编为大家整理,主要介绍了duilib corner属性的贴图技巧——让图片自动贴到控件的的某一边或者一角并自适应控件的大小相关的知识,希望对你有一定的参考价值。


转载请说明原出处,谢谢~~

         Duilib给控件贴图功能可以附带多个属性,各个属性的配合可以达到许多效果。以下是duilib支持的所有贴图属性:

贴图描述:

         Duilib的表现力丰富很大程度上得益于贴图描述的简单强大。Duilib的贴图描述分为简单模式和复杂模式两种。

         简单模式使用文件名做为贴图描述内容,在这种方式下,此图片将会以拉伸方式铺满控件。

         复杂模式使用带属性的字符串表示贴图方式,既支持从文件中加载图片,也可以从资源中加载,具体如下:

         如果是从文件加载,设置file属性,如file='XXX.png',不要写res和restype属性

         如果从资源加载,设置res和restype属性,不要设置file属性

         dest属性的作用是指定图片绘制在控件的一部分上面(绘制目标位置)

         source属性的作用是指定使用图片的一部分

         corner属性是指图片安装scale9方式绘制

         mask属性是给不支持alpha通道的图片格式(如bmp)指定透明色

         fade属性是设置图片绘制的透明度

         hole属性是指定scale9绘制时要不要绘制中间部分

         xtiled属性设置成true就是指定图片在x轴不要拉伸而是平铺,ytiled属性设置成true就是指定图片在y轴不要拉伸而是平铺。


         其中source、dest、corner属性是最常用的。我个人觉得九宫格属性corner是最好用也是最强的贴图属性。用好它可以省不少事。还不知道九宫格的朋友可以看这篇文章:九宫格的介绍
         这里说一个小技巧:有时候我们贴图时,图片的大小小于控件本身的大小,而我们需要将图片贴到控件的某个位置上,这时通常会用dest属性来解决这个问题。但是dest属性有个缺点就是贴的位置是固定的,他不可以让图片随控件的大小改变而自动改变图片的位置和大小。如果要把图片贴到控件的四个边的其中一个,或者贴到某个角上,使用corner属性可以完美实现,而且贴图是自适应控件的大小改变的。举个例子,如图:


         可以看到这个窗体的背景图片是绿色的草原,这个窗体的大小是840x600,而这个背景图的大小是840x320,为了不让图片纵向拉伸而变难看,需要把他贴到窗体的顶边上,这是如果用dest属性的确是可以实现。但是问题在于,当我改变了窗体的大小时,图片依然会贴到“0,0,840,320”的位置,其他的位置是背景色,如图:


         而如果要让背景图随着窗体的大小该改变而自适应,就需要用c++代码手动控制dest属性。但是如果使用corner属性就可以完美解决这个问题。这样使用corner属性:

bkimage="file='SKIN_PIC_2.png' corner='0,320,0,0'"





        把第二个字段设置为图片的高度,其他为0,这样duilib就会把图片直接贴到控件的顶部,而且现在窗体随便改变大小,背景图都是自适应的。这也算是九宫格属性的妙用。同样的道理可以让图片一直贴到窗体的左边:


bkimage="file='SKIN_PIC_2.png' corner='840,0,0,0'"       或者左上角:

bkimage="file='SKIN_PIC_2.png' corner='840,320,0,0'"

       右下角:


bkimage="file='SKIN_PIC_2.png' corner='0,0,840,320'"        左下角:

bkimage="file='SKIN_PIC_2.png' corner='840,0,0,320'"

        左边:


bkimage="file='SKIN_PIC_2.png' corner='840,0,0,0'" 

      明白了这个道理后就可以任意贴到控件的四边或者四角,并且自适应控件了。



    Redrain  2014.8.29


推荐阅读
  • 本文介绍了如何使用Adobe Photoshop将图片调整为800x800像素,并确保图片清晰度不受影响,特别适合用于制作淘宝主图。无论是原始图片大于或小于800x800像素,都能通过以下步骤轻松完成。 ... [详细]
  • Cookie学习小结
    Cookie学习小结 ... [详细]
  • 本文详细介绍了如何在PHP中记录和管理行为日志,包括ThinkPHP框架中的日志记录方法、日志的用途、实现原理以及相关配置。 ... [详细]
  • ThinkPHP RBAC 实战:登录验证详解
    本文将详细介绍 ThinkPHP 框架中的 RBAC(角色基础访问控制)系统,特别是登录验证部分。我们将通过实际代码示例,展示如何实现用户登录验证、验证码生成及验证、以及登录后的权限管理。 ... [详细]
  • Nacos 0.3 数据持久化详解与实践
    本文详细介绍了如何将 Nacos 0.3 的数据持久化到 MySQL 数据库,并提供了具体的步骤和注意事项。 ... [详细]
  • 本文详细介绍如何使用Netzob工具逆向未知通信协议,涵盖从基本安装到高级模糊测试的全过程。通过实例演示,帮助读者掌握Netzob的核心功能。 ... [详细]
  • 无论是在迁移到云服务还是更换云服务商的过程中,数据迁移都是一个至关重要的环节。本文将探讨数据迁移中可能遇到的问题及解决方案,包括路径问题、速度问题和数据完整性等。 ... [详细]
  • Java 8 开发环境搭建指南
    本文详细介绍了如何在 Windows 系统上搭建 Java 8 开发环境,包括 JDK 的下载、安装以及环境变量的配置。同时,还提供了 Eclipse IDE 的下载和安装步骤。 ... [详细]
  • iOS 不定参数 详解 ... [详细]
  • macOS SwiftUI 组件之 实用下拉菜单 (教程含源码)
    macOS SwiftUI 组件之 实用下拉菜单 (教程含源码) ... [详细]
  • 本文介绍了如何创建和运行一个简单的 Bash 脚本,包括创建脚本文件、编写输出指令、赋予执行权限和运行脚本的基本步骤。 ... [详细]
  • malloc 是 C 语言中的一个标准库函数,全称为 memory allocation,即动态内存分配。它用于在程序运行时申请一块指定大小的连续内存区域,并返回该区域的起始地址。当无法预先确定内存的具体位置时,可以通过 malloc 动态分配内存。 ... [详细]
  • 深入解析Django CBV模型的源码运行机制
    本文详细探讨了Django CBV(Class-Based Views)模型的源码运行流程,通过具体的示例代码和详细的解释,帮助读者更好地理解和应用这一强大的功能。 ... [详细]
  • 如何在Eclipse中配置Python开发环境
    本文详细介绍了如何在Eclipse中配置Python开发环境,包括安装PyDev插件和设置Python解释器的步骤。 ... [详细]
  • 本文节选自《NLTK基础教程——用NLTK和Python库构建机器学习应用》一书的第1章第1.2节,作者Nitin Hardeniya。本文将带领读者快速了解Python的基础知识,为后续的机器学习应用打下坚实的基础。 ... [详细]
author-avatar
周周周周芮多
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有